package k2_oop.p5_abstractAndInterface.demo02;

/**
 * 如果抽象类中所有的方法都是抽象的，此时可以把当前的抽象类改为接口
 * 接口属于特殊的抽象类
 *
 * 抽象类是 abstract 修饰的 class，接口用 interface 替换了 class
 * interface 与 class 的不同
 *  1.class是用extends继承，而interface是用implements实现，本质上是一样的东西
 *  2.class只能单继承，interface可以多重继承
 *
 * interface 替换掉的是 abstract class 所以既是类又表示抽象
 * 可以使用 abstract 修饰，但是没有意义
 *
 * 为什么要用接口？接口的目的？
 * 面向接口编程
 *     接口中的抽象方法可以定义行业的规范，所有子类都必须实现这些规范(抽象方法)
 *
 * JDK8 新特性
 *     可以定义 default 修饰的普通方法
 *     也可以定义静态方法
 *
 *  抽象类和接口的区别？
 *      1.抽象类中可以有普通方法，抽象方法，静态方法，构造方法；接口中default定义普通方法和静态方法，抽象方法
 *      2.抽象类是class 由abstract修饰，允许被继承 且只能是单继承
 *        接口是 interface 代替了 class 同时也表示抽象 允许被实现 可以同时实现多个接口
 *      3.抽象类表示的是一类事物 接口通常表示一种能力
 */
public abstract interface Flyable {

    public void fly();

}
